001 /** 002 * Created by IntelliJ IDEA. 003 * User: Wei Wang 004 * Date: Apr 9, 2003 005 * Time: 4:30:17 PM 006 */ 007 008 package EVolve; 009 010 import EVolve.data.DataManager; 011 import EVolve.data.DataSource; 012 013 import java.util.*; 014 015 public class DataSourceManager { 016 private ArrayList dataManagerList; 017 private ArrayList filterList; 018 private int currentDataSource; 019 private DataManager currentDataManager; 020 private Filter currentFilter; 021 022 public DataSourceManager(ArrayList dsList) { 023 dataManagerList = new ArrayList(); 024 for (int i=0; i<dsList.size(); i++) { 025 DataSource dataSource = (DataSource)dsList.get(i); 026 dataManagerList.add(new DataManager(dataSource)); 027 } 028 filterList = new ArrayList(); 029 currentDataSource = -1; 030 } 031 032 public void init() { 033 for (int i=0; i<dataManagerList.size(); i++) { 034 filterList.add(new Filter()); 035 } 036 switchDataSource(0); 037 } 038 039 public int getCurrentDataSourceId() { 040 return currentDataSource; 041 } 042 043 public void switchDataSource(int selectedDataSourceIndex) { 044 if (currentDataSource == selectedDataSourceIndex) return; 045 046 currentDataSource = selectedDataSourceIndex; 047 currentDataManager = (DataManager)dataManagerList.get(selectedDataSourceIndex); 048 currentFilter = (Filter)filterList.get(selectedDataSourceIndex); 049 Scene.selectDataSource(currentDataManager, currentFilter); 050 } 051 052 public ArrayList getDataManagerList() { 053 return dataManagerList; 054 } 055 056 public void addDataSource(String name) { 057 Object dsource = EVolve.Main.instanciateFromName(name); 058 059 if (dsource == null) { 060 Scene.showErrorMessage("EVolve failed to instanciate data source: \"" + name + "\""); 061 } else if (dsource instanceof DataSource) { 062 dataManagerList.add(new DataManager((DataSource)dsource)); 063 filterList.add(new Filter()); 064 } else { 065 Scene.showErrorMessage("EVolve> \"" + name + "\" is not a DataSource"); 066 } 067 068 } 069 070 public String getUsedDataSourceName(int dataSourceId) { 071 DataManager dm = (DataManager)dataManagerList.get(dataSourceId); 072 return dm.getDatasourceName(); 073 } 074 075 public String getCurrentDataSourceName() { 076 return currentDataManager.getDatasourceName(); 077 } 078 079 public DataManager getDataManager(int index) { 080 if (index >= dataManagerList.size()) return null; 081 082 return (DataManager)dataManagerList.get(index); 083 } 084 }